fix: move from semaphore to rwmutex #215
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description of your changes
Replaced the semaphore in the internal terraform harness with a RWMutex. RWMutex protects the terraform shared cache from corruption. If an init is performed, it requires a write lock. Only one write lock at a time. If another action is performed, a read lock is acquired. More than one read locks can be acquired. This prevents an init from inadvertently changing a plugin while it's in use. Prevents issues with
text file busy
errors. This is required if using max-reconcile-rate greater than 1.Fixes #186
I have:
make reviewable
to ensure this PR is ready for review.How has this code been tested
I've tested the code locally with a max reconcile rate of 4.